package com.songlanyun.modules.order.model.vo;

import com.songlanyun.common.drive.ValueObject;
import com.songlanyun.common.enums.GoodsConstant;
import com.songlanyun.modules.servicegoods.entity.ServiceItem;
import lombok.Data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Data
public class SubmitChildOrderVo implements ValueObject
{
    /**
     * 订单类型
     */
    private Integer orderType = 1;
    /**
     * 用户的购物车id,如果是从购物车过来的提交订单,userCartId必须给
     * 同时要注意的问题，如果是购物车过来的都是直销订单
     */
    private Long userCartId;
    //活动商品id
    private Long activityGoodsId = 0L;
    //活动商品id
    private Long goodsId;
    ///商品标题
    private String goodsTitle;
    //商品的短标题（容余）
    private String goodsShortTitle;
    //商品的封页图片（容余）
    private String goodsCover;
    //规则文本（黄;3000;高底;50M）（容余）
    private String skuSetName;
    //规格hash值
    private String skuHashCode;
    //商品规格编码
    private String skuBarCode;


    //单品标识
    private Long singleGoodsId;
    //单品标题
    private String singleGoodsTitle;
    //单品编号
    private String singleGoodsCode;
    //单品单位
    private String unit;

    //0库存足够，1库存不足，2库存紧张
    private int stockStatus=0;

    /**
     * 销售价(添加进购物车时的价格)
     */
    private BigDecimal salePrice;
    //实例价格
    private BigDecimal factPrice;
    /**
     * 市场价
     */
    private BigDecimal marketPrice;
    //存入的数量
    private Integer num;

    //当前商品的实际总价
    private BigDecimal totalPrice;


    //原商品总价
    private BigDecimal originalGoodsAmount;

    //首单优惠分摊多少钱
    private BigDecimal firstOrderReduced = BigDecimal.ZERO;

    /**
     * 当前商品的实际总价扣首单
     */
    private BigDecimal totalFactPrice;


    //总优惠多少钱
    private BigDecimal totalReduced;

    //重量
    private BigDecimal weight;

    //总重量
    private BigDecimal totalWeight;
    //体积
    private BigDecimal volume;
    //总体积
    private BigDecimal totalVolume;

    //折扣（如果是10不显示）
    private String discount="";

    //物流模板
    private Integer freightTemplateId;

    //单件成本
    private BigDecimal cost;

    //总成本
    private BigDecimal totalCost;

    //单件兑换积分
    private BigDecimal exchangePoint;

    //实际兑换积分
    private BigDecimal totalPoint;

    /**
     * 是否是平台的代销商品
     */
    private Boolean proxyGoods;

    /**
     * 礼包类型
     */
    private GoodsConstant.GiftType giftType;

    /**
     * 有效天数
     */
    private Integer validity = 0;
    /**
     * 提前预约天数
     */
    private Integer advanceReservation = 0;
    /**
     * 免费福利项目
     */
    private String welfareItems= "";
    /**
     * 服务次数
     */
    private Integer serviceCount= 0;

    /**
     * 服务商品的服务项目
     */
    private List<ServiceItem> serviceItems = new ArrayList<>();


    /**
     * 如果是普通商品，是普能商品一级分类，如果是服务商品，是服务商品一级分类（记录只为做数据统计）
     */
    private Long firstCategoryId;

    /**
     * 如果是普通商品，是普能商品引用的商品分类，如果是服务商品，是服务商品引用的商品分类（记录只为做数据统计）
     */
    private Long goodsCategoryId;

    /**
     * 单个商品可赠送积分
     */
    private BigDecimal giveBackPoint = BigDecimal.ZERO ;


    /**
     * 总共需要赠送多少
     */
    private BigDecimal totalGiveBackPoint = BigDecimal.ZERO ;

    /**
     * 单件需要赠送多少贡献值
     */
    private BigDecimal consumptionValue= BigDecimal.ZERO ;


    /**
     * 总共需要赠送多少贡献值
     */
    private BigDecimal totalConsumptionValue= BigDecimal.ZERO ;




    /**
     * 店铺券分摊多少钱
     */
    private BigDecimal shopCouponSharing = BigDecimal.ZERO;


    /**
     * 平台券分摊多少钱
     */
    private BigDecimal platformCouponSharing = BigDecimal.ZERO;

    /**
     * 平台公益积分现金分摊多多少钱
     */
    private BigDecimal platformPointZxSharing = BigDecimal.ZERO;


    /**
     * 运费分摊多少钱
     */
    private BigDecimal freightSharing = BigDecimal.ZERO;

    /**
     * 商品分区特征(0普通商品,1激活区商品)
     */
    private GoodsConstant.AreaFeature areaFeature;


    /**
     * 第三方商品的SpuId;
     */
    private Long thirdSpuId;

    /**
     *  是否是第三方商品
     */
    private Boolean third;

    /**
     * 如果是第三方商品，来源有效
     * 来源1云仓2京东6阿里巴巴7天猫11华南一仓14华东一仓15淘宝
     */
    private Integer source;

    /**
     * 第三方商品的SkuId;
     */
    private Long thirdSkuId;

    /**
     * 候鸟商品id
     */
    private String houniaoSpuId;





}
